<?php

require_once "LoginController.php";
require_once "LoginHandler.php";
require_once "LoginView.php";

//Hanterar Inloggning/Utloggning av användare
class LoginController {
  
  private $loginView;
  private $loginHandler;
  private $body;
  private $message;
  
  
  function __construct(){
	$this->loginView = new LoginView();
	$this->loginHandler = new LoginHandler();
  }
  
  // kolla om användaren redan är inloggad
  // kolla om vi kan logga in användaren med hjälp av cookie
  // kolla om användaren försökt logga in
  // kolla om användaren förökt logga ut
  ////returnerar $body = $loginView->DoLoginBox() . $loginView->DoLogoutBox();
  public function DoControl(){
  		//här använder vi klassens privata funktioner 
  		//för att hantera inloggning
  		if($this->loginWithCookie()== FALSE){
  			$this->logIn();			
  		}
		//utloggning om det är begärt
		$this->logOut();
	
  		// här returnerar htmlformuläret
  		if($this->logedIn()) {
		
			$this->body = $this->loginView->DoLogOutBox();
		}
		
		else {
			$this->body = $this->loginView->DoLoginBox();
		}
		return $this->body.$this->message;	
  }	
   
  //kolla om användaren redan är inloggad
  private function logedIn(){
  	if ($this->loginHandler->IsloggedIn()) {
  		return TRUE;
	}
  }
  // kolla om vi kan logga in användaren med hjälp av cookie
  private function loginWithCookie(){
  		
  	if ($this->loginView->CheckCookie()) {
				
				//om vi har cookie så loggar vi in automatiskt
				if ($this->loginHandler->DoLogin($_COOKIE["username"], $_COOKIE["password"]) == true) {
					$this->Message .= $this->loginHandler->CookieMessage(true);// dettta skall generas i vyn
					return TRUE;
				}	
	return FALSE;
	}	
  }
  //kolla om användaren försökt logga in
  //om så är fallet så försöker vi logga in
  //om checkboxen remember är ifylld sparas uppgifterna i en cookie
  private function logIn(){
  	if ($this->loginView->TriedToLogin() == true) {
			
			//Vi försöker logga in
			if ($this->loginHandler->DoLogin($this->loginView->GetUserName(), $this->loginView->GetPassword()) == true){
			
				//om checkboxen remember är ifylld sparas uppgifterna i en cookie
				if ($this->loginView->CheckBox() == true) {
							
						//vi sätter cookiens utgångsdatum till om ett år // detta skall vara en funktion i vyn
						// vi skall också ta bort kakan när vi loggar bort
						
						$this->Message .= $this->loginView->doCookie();
				}
				$this->Message .= $this->loginHandler->CookieMessage(true);
		  	}
		  	
			//inloggningen misslyckades
			else {
				$this->Message .= $this->loginHandler->CookieMessage(FALSE);
			}
	}
  }
  //om användaren försökt logga ut, 
  //loggas han ut
  private function logOut(){
  	if ($this->loginView->TriedToLogOut()) {
  			
			if ($this->loginView->CheckCookie()){
				
				$this->loginView->undoCookie();
			} 
			//loggar ut
			$this->loginHandler->DoLogout();
			
	}
  	
  }
  
  
}

?>